/* RAS: modified to return server side error messages rather than HTTP Error */
/*1.5.6*/
(function () {
    var f = 0,
        l = [],
        n = {}, j = {}, a = {
            "<": "lt",
            ">": "gt",
            "&": "amp",
            '"': "quot",
            "'": "#39"
        }, m = /[<>&\"\']/g,
        b, c = window.setTimeout,
        d = {}, e;

    function h() {
        this.returnValue = false
    }
    function k() {
        this.cancelBubble = true
    } (function (o) {
        var p = o.split(/,/),
            q, s, r;
        for (q = 0; q < p.length; q += 2) {
            r = p[q + 1].split(/ /);
            for (s = 0; s < r.length; s++) {
                j[r[s]] = p[q]
            }
        }
    })("application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mpga mpega mp2 mp3,audio/x-wav,wav,audio/mp4,m4a,image/bmp,bmp,image/gif,gif,image/jpeg,jpeg jpg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe");
    var g = {
        VERSION: "1.5.6",
        STOPPED: 1,
        STARTED: 2,
        QUEUED: 1,
        UPLOADING: 2,
        FAILED: 4,
        DONE: 5,
        GENERIC_ERROR: -100,
        HTTP_ERROR: -200,
        IO_ERROR: -300,
        SECURITY_ERROR: -400,
        INIT_ERROR: -500,
        FILE_SIZE_ERROR: -600,
        FILE_EXTENSION_ERROR: -601,
        IMAGE_FORMAT_ERROR: -700,
        IMAGE_MEMORY_ERROR: -701,
        IMAGE_DIMENSIONS_ERROR: -702,
        mimeTypes: j,
        ua: (function () {
            var s = navigator,
                r = s.userAgent,
                t = s.vendor,
                p, o, q;
            p = /WebKit/.test(r);
            q = p && t.indexOf("Apple") !== -1;
            o = window.opera && window.opera.buildNumber;
            return {
                windows: navigator.platform.indexOf("Win") !== -1,
                android: /Android/.test(r),
                ie: !p && !o && (/MSIE/gi).test(r) && (/Explorer/gi).test(s.appName),
                webkit: p,
                gecko: !p && /Gecko/.test(r),
                safari: q,
                opera: !!o
            }
        }()),
        typeOf: function (p) {
            return ({}).toString.call(p).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()
        },
        extend: function (o) {
            g.each(arguments, function (p, q) {
                if (q > 0) {
                    g.each(p, function (s, r) {
                        o[r] = s
                    })
                }
            });
            return o
        },
        cleanName: function (o) {
            var p, q;
            q = [/[\300-\306]/g, "A", /[\340-\346]/g, "a", /\307/g, "C", /\347/g, "c", /[\310-\313]/g, "E", /[\350-\353]/g, "e", /[\314-\317]/g, "I", /[\354-\357]/g, "i", /\321/g, "N", /\361/g, "n", /[\322-\330]/g, "O", /[\362-\370]/g, "o", /[\331-\334]/g, "U", /[\371-\374]/g, "u"];
            for (p = 0; p < q.length; p += 2) {
                o = o.replace(q[p], q[p + 1])
            }
            o = o.replace(/\s+/g, "_");
            o = o.replace(/[^a-z0-9_\-\.]+/gi, "");
            return o
        },
        addRuntime: function (o, p) {
            p.name = o;
            l[o] = p;
            l.push(p);
            return p
        },
        guid: function () {
            var o = new Date().getTime().toString(32),
                p;
            for (p = 0; p < 5; p++) {
                o += Math.floor(Math.random() * 65535).toString(32)
            }
            return (g.guidPrefix || "p") + o + (f++).toString(32)
        },
        buildUrl: function (p, o) {
            var q = "";
            g.each(o, function (s, r) {
                q += (q ? "&" : "") + encodeURIComponent(r) + "=" + encodeURIComponent(s)
            });
            if (q) {
                p += (p.indexOf("?") > 0 ? "&" : "?") + q
            }
            return p
        },
        each: function (r, s) {
            var q, p, o;
            if (r) {
                q = r.length;
                if (q === b) {
                    for (p in r) {
                        if (r.hasOwnProperty(p)) {
                            if (s(r[p], p) === false) {
                                return
                            }
                        }
                    }
                } else {
                    for (o = 0; o < q; o++) {
                        if (s(r[o], o) === false) {
                            return
                        }
                    }
                }
            }
        },
        formatSize: function (o) {
            if (o === b || /\D/.test(o)) {
                return g.translate("N/A")
            }
            if (o > 1073741824) {
                return Math.round(o / 1073741824, 1) + " GB"
            }
            if (o > 1048576) {
                return Math.round(o / 1048576, 1) + " MB"
            }
            if (o > 1024) {
                return Math.round(o / 1024, 1) + " KB"
            }
            return o + " b"
        },
        getPos: function (p, t) {
            var u = 0,
                s = 0,
                w, v = document,
                q, r;
            p = p;
            t = t || v.body;

            function o(C) {
                var A, B, z = 0,
                    D = 0;
                if (C) {
                    B = C.getBoundingClientRect();
                    A = v.compatMode === "CSS1Compat" ? v.documentElement : v.body;
                    z = B.left + A.scrollLeft;
                    D = B.top + A.scrollTop
                }
                return {
                    x: z,
                    y: D
                }
            }
            if (p && p.getBoundingClientRect && g.ua.ie && (!v.documentMode || v.documentMode < 8)) {
                q = o(p);
                r = o(t);
                return {
                    x: q.x - r.x,
                    y: q.y - r.y
                }
            }
            w = p;
            while (w && w != t && w.nodeType) {
                u += w.offsetLeft || 0;
                s += w.offsetTop || 0;
                w = w.offsetParent
            }
            w = p.parentNode;
            while (w && w != t && w.nodeType) {
                u -= w.scrollLeft || 0;
                s -= w.scrollTop || 0;
                w = w.parentNode
            }
            return {
                x: u,
                y: s
            }
        },
        getSize: function (o) {
            return {
                w: o.offsetWidth || o.clientWidth,
                h: o.offsetHeight || o.clientHeight
            }
        },
        parseSize: function (o) {
            var p;
            if (typeof (o) == "string") {
                o = /^([0-9]+)([mgk]?)$/.exec(o.toLowerCase().replace(/[^0-9mkg]/g, ""));
                p = o[2];
                o = +o[1];
                if (p == "g") {
                    o *= 1073741824
                }
                if (p == "m") {
                    o *= 1048576
                }
                if (p == "k") {
                    o *= 1024
                }
            }
            return o
        },
        xmlEncode: function (o) {
            return o ? ("" + o).replace(m, function (p) {
                return a[p] ? "&" + a[p] + ";" : p
            }) : o
        },
        toArray: function (q) {
            var p, o = [];
            for (p = 0; p < q.length; p++) {
                o[p] = q[p]
            }
            return o
        },
        inArray: function (q, r) {
            if (r) {
                if (Array.prototype.indexOf) {
                    return Array.prototype.indexOf.call(r, q)
                }
                for (var o = 0, p = r.length; o < p; o++) {
                    if (r[o] === q) {
                        return o
                    }
                }
            }
            return -1
        },
        addI18n: function (o) {
            return g.extend(n, o)
        },
        translate: function (o) {
            return n[o] || o
        },
        isEmptyObj: function (o) {
            if (o === b) {
                return true
            }
            for (var p in o) {
                return false
            }
            return true
        },
        hasClass: function (q, p) {
            var o;
            if (q.className == "") {
                return false
            }
            o = new RegExp("(^|\\s+)" + p + "(\\s+|$)");
            return o.test(q.className)
        },
        addClass: function (p, o) {
            if (!g.hasClass(p, o)) {
                p.className = p.className == "" ? o : p.className.replace(/\s+$/, "") + " " + o
            }
        },
        removeClass: function (q, p) {
            var o = new RegExp("(^|\\s+)" + p + "(\\s+|$)");
            q.className = q.className.replace(o, function (s, r, t) {
                return r === " " && t === " " ? " " : ""
            })
        },
        getStyle: function (p, o) {
            if (p.currentStyle) {
                return p.currentStyle[o]
            } else {
                if (window.getComputedStyle) {
                    return window.getComputedStyle(p, null)[o]
                }
            }
        },
        addEvent: function (t, o, u) {
            var s, r, q, p;
            p = arguments[3];
            o = o.toLowerCase();
            if (e === b) {
                e = "Plupload_" + g.guid()
            }
            if (t.addEventListener) {
                s = u;
                t.addEventListener(o, s, false)
            } else {
                if (t.attachEvent) {
                    s = function () {
                        var v = window.event;
                        if (!v.target) {
                            v.target = v.srcElement
                        }
                        v.preventDefault = h;
                        v.stopPropagation = k;
                        u(v)
                    };
                    t.attachEvent("on" + o, s)
                }
            }
            if (t[e] === b) {
                t[e] = g.guid()
            }
            if (!d.hasOwnProperty(t[e])) {
                d[t[e]] = {}
            }
            r = d[t[e]];
            if (!r.hasOwnProperty(o)) {
                r[o] = []
            }
            r[o].push({
                func: s,
                orig: u,
                key: p
            })
        },
        removeEvent: function (t, o) {
            var r, u, q;
            if (typeof (arguments[2]) == "function") {
                u = arguments[2]
            } else {
                q = arguments[2]
            }
            o = o.toLowerCase();
            if (t[e] && d[t[e]] && d[t[e]][o]) {
                r = d[t[e]][o]
            } else {
                return
            }
            for (var p = r.length - 1; p >= 0; p--) {
                if (r[p].key === q || r[p].orig === u) {
                    if (t.removeEventListener) {
                        t.removeEventListener(o, r[p].func, false)
                    } else {
                        if (t.detachEvent) {
                            t.detachEvent("on" + o, r[p].func)
                        }
                    }
                    r[p].orig = null;
                    r[p].func = null;
                    r.splice(p, 1);
                    if (u !== b) {
                        break
                    }
                }
            }
            if (!r.length) {
                delete d[t[e]][o]
            }
            if (g.isEmptyObj(d[t[e]])) {
                delete d[t[e]];
                try {
                    delete t[e]
                } catch (s) {
                    t[e] = b
                }
            }
        },
        removeAllEvents: function (p) {
            var o = arguments[1];
            if (p[e] === b || !p[e]) {
                return
            }
            g.each(d[p[e]], function (r, q) {
                g.removeEvent(p, q, o)
            })
        }
    };
    g.Uploader = function (s) {
        var p = {}, v, u = [],
            r, q = false;
        v = new g.QueueProgress();
        s = g.extend({
            chunk_size: 0,
            multipart: true,
            multi_selection: true,
            file_data_name: "file",
            filters: []
        }, s);

        function t() {
            var x, y = 0,
                w;
            if (this.state == g.STARTED) {
                for (w = 0; w < u.length; w++) {
                    if (!x && u[w].status == g.QUEUED) {
                        x = u[w];
                        x.status = g.UPLOADING;
                        if (this.trigger("BeforeUpload", x)) {
                            this.trigger("UploadFile", x)
                        }
                    } else {
                        y++
                    }
                }
                if (y == u.length) {
                    this.stop();
                    this.trigger("UploadComplete", u)
                }
            }
        }
        function o() {
            var x, w;
            v.reset();
            for (x = 0; x < u.length; x++) {
                w = u[x];
                if (w.size !== b) {
                    v.size += w.size;
                    v.loaded += w.loaded
                } else {
                    v.size = b
                }
                if (w.status == g.DONE) {
                    v.uploaded++
                } else {
                    if (w.status == g.FAILED) {
                        v.failed++
                    } else {
                        v.queued++
                    }
                }
            }
            if (v.size === b) {
                v.percent = u.length > 0 ? Math.ceil(v.uploaded / u.length * 100) : 0
            } else {
                v.bytesPerSec = Math.ceil(v.loaded / ((+new Date() - r || 1) / 1000));
                v.percent = v.size > 0 ? Math.ceil(v.loaded / v.size * 100) : 0
            }
        }
        g.extend(this, {
            state: g.STOPPED,
            runtime: "",
            features: {},
            files: u,
            settings: s,
            total: v,
            id: g.guid(),
            init: function () {
                var B = this,
                    C, y, x, A = 0,
                    z;
                if (typeof (s.preinit) == "function") {
                    s.preinit(B)
                } else {
                    g.each(s.preinit, function (E, D) {
                        B.bind(D, E)
                    })
                }
                s.page_url = s.page_url || document.location.pathname.replace(/\/[^\/]+$/g, "/");
                if (!/^(\w+:\/\/|\/)/.test(s.url)) {
                    s.url = s.page_url + s.url
                }
                s.chunk_size = g.parseSize(s.chunk_size);
                s.max_file_size = g.parseSize(s.max_file_size);
                B.bind("FilesAdded", function (D, G) {
                    var F, E, I = 0,
                        J, H = s.filters;
                    if (H && H.length) {
                        J = [];
                        g.each(H, function (K) {
                            g.each(K.extensions.split(/,/), function (L) {
                                if (/^\s*\*\s*$/.test(L)) {
                                    J.push("\\.*")
                                } else {
                                    J.push("\\." + L.replace(new RegExp("[" + ("/^$.*+?|()[]{}\\".replace(/./g, "\\$&")) + "]", "g"), "\\$&"))
                                }
                            })
                        });
                        J = new RegExp(J.join("|") + "$", "i")
                    }
                    for (F = 0; F < G.length; F++) {
                        E = G[F];
                        E.loaded = 0;
                        E.percent = 0;
                        E.status = g.QUEUED;
                        if (J && !J.test(E.name)) {
                            D.trigger("Error", {
                                code: g.FILE_EXTENSION_ERROR,
                                message: g.translate("File extension error."),
                                file: E
                            });
                            continue
                        }
                        if (E.size !== b && E.size > s.max_file_size) {
                            D.trigger("Error", {
                                code: g.FILE_SIZE_ERROR,
                                message: g.translate("File size error."),
                                file: E
                            });
                            continue
                        }
                        u.push(E);
                        I++
                    }
                    if (I) {
                        c(function () {
                            B.trigger("QueueChanged");
                            B.refresh()
                        }, 1)
                    } else {
                        return false
                    }
                });
                if (s.unique_names) {
                    B.bind("UploadFile", function (D, E) {
                        var G = E.name.match(/\.([^.]+)$/),
                            F = "tmp";
                        if (G) {
                            F = G[1]
                        }
                        E.target_name = E.id + "." + F
                    })
                }
                B.bind("UploadProgress", function (D, E) {
                    E.percent = E.size > 0 ? Math.ceil(E.loaded / E.size * 100) : 100;
                    o()
                });
                B.bind("StateChanged", function (D) {
                    if (D.state == g.STARTED) {
                        r = (+new Date())
                    } else {
                        if (D.state == g.STOPPED) {
                            for (C = D.files.length - 1; C >= 0; C--) {
                                if (D.files[C].status == g.UPLOADING) {
                                    D.files[C].status = g.QUEUED;
                                    o()
                                }
                            }
                        }
                    }
                });
                B.bind("QueueChanged", o);
                B.bind("Error", function (D, E) {
                    if (E.file) {
                        E.file.status = g.FAILED;
                        o();
                        if (D.state == g.STARTED) {
                            c(function () {
                                t.call(B)
                            }, 1)
                        }
                    }
                });
                B.bind("FileUploaded", function (D, E) {
                    E.status = g.DONE;
                    E.loaded = E.size;
                    D.trigger("UploadProgress", E);
                    c(function () {
                        t.call(B)
                    }, 1)
                });
                if (s.runtimes) {
                    y = [];
                    z = s.runtimes.split(/\s?,\s?/);
                    for (C = 0; C < z.length; C++) {
                        if (l[z[C]]) {
                            y.push(l[z[C]])
                        }
                    }
                } else {
                    y = l
                }
                function w() {
                    var G = y[A++],
                        F, D, E;
                    if (G) {
                        F = G.getFeatures();
                        D = B.settings.required_features;
                        if (D) {
                            D = D.split(",");
                            for (E = 0; E < D.length; E++) {
                                if (!F[D[E]]) {
                                    w();
                                    return
                                }
                            }
                        }
                        G.init(B, function (H) {
                            if (H && H.success) {
                                B.features = F;
                                B.runtime = G.name;
                                B.trigger("Init", {
                                    runtime: G.name
                                });
                                B.trigger("PostInit");
                                B.refresh()
                            } else {
                                w()
                            }
                        })
                    } else {
                        B.trigger("Error", {
                            code: g.INIT_ERROR,
                            message: g.translate("Init error.")
                        })
                    }
                }
                w();
                if (typeof (s.init) == "function") {
                    s.init(B)
                } else {
                    g.each(s.init, function (E, D) {
                        B.bind(D, E)
                    })
                }
            },
            refresh: function () {
                this.trigger("Refresh")
            },
            start: function () {
                if (u.length && this.state != g.STARTED) {
                    this.state = g.STARTED;
                    this.trigger("StateChanged");
                    t.call(this)
                }
            },
            stop: function () {
                if (this.state != g.STOPPED) {
                    this.state = g.STOPPED;
                    this.trigger("CancelUpload");
                    this.trigger("StateChanged")
                }
            },
            disableBrowse: function () {
                q = arguments[0] !== b ? arguments[0] : true;
                this.trigger("DisableBrowse", q)
            },
            getFile: function (x) {
                var w;
                for (w = u.length - 1; w >= 0; w--) {
                    if (u[w].id === x) {
                        return u[w]
                    }
                }
            },
            removeFile: function (x) {
                var w;
                for (w = u.length - 1; w >= 0; w--) {
                    if (u[w].id === x.id) {
                        return this.splice(w, 1)[0]
                    }
                }
            },
            splice: function (y, w) {
                var x;
                x = u.splice(y === b ? 0 : y, w === b ? u.length : w);
                this.trigger("FilesRemoved", x);
                this.trigger("QueueChanged");
                return x
            },
            trigger: function (x) {
                var z = p[x.toLowerCase()],
                    y, w;
                if (z) {
                    w = Array.prototype.slice.call(arguments);
                    w[0] = this;
                    for (y = 0; y < z.length; y++) {
                        if (z[y].func.apply(z[y].scope, w) === false) {
                            return false
                        }
                    }
                }
                return true
            },
            hasEventListener: function (w) {
                return !!p[w.toLowerCase()]
            },
            bind: function (w, y, x) {
                var z;
                w = w.toLowerCase();
                z = p[w] || [];
                z.push({
                    func: y,
                    scope: x || this
                });
                p[w] = z
            },
            unbind: function (w) {
                w = w.toLowerCase();
                var z = p[w],
                    x, y = arguments[1];
                if (z) {
                    if (y !== b) {
                        for (x = z.length - 1; x >= 0; x--) {
                            if (z[x].func === y) {
                                z.splice(x, 1);
                                break
                            }
                        }
                    } else {
                        z = []
                    }
                    if (!z.length) {
                        delete p[w]
                    }
                }
            },
            unbindAll: function () {
                var w = this;
                g.each(p, function (y, x) {
                    w.unbind(x)
                })
            },
            destroy: function () {
                this.stop();
                this.trigger("Destroy");
                this.unbindAll()
            }
        })
    };
    g.File = function (r, p, q) {
        var o = this;
        o.id = r;
        o.name = p;
        o.size = q;
        o.loaded = 0;
        o.percent = 0;
        o.status = 0
    };
    g.Runtime = function () {
        this.getFeatures = function () { };
        this.init = function (o, p) { }
    };
    g.QueueProgress = function () {
        var o = this;
        o.size = 0;
        o.loaded = 0;
        o.uploaded = 0;
        o.failed = 0;
        o.queued = 0;
        o.percent = 0;
        o.bytesPerSec = 0;
        o.reset = function () {
            o.size = o.loaded = o.uploaded = o.failed = o.queued = o.percent = o.bytesPerSec = 0
        }
    };
    g.runtimes = {};
    window.plupload = g
})();
(function () {
    if (window.google && google.gears) {
        return
    }
    var a = null;
    if (typeof GearsFactory != "undefined") {
        a = new GearsFactory()
    } else {
        try {
            a = new ActiveXObject("Gears.Factory");
            if (a.getBuildInfo().indexOf("ie_mobile") != -1) {
                a.privateSetGlobalObject(this)
            }
        } catch (b) {
            if ((typeof navigator.mimeTypes != "undefined") && navigator.mimeTypes["application/x-googlegears"]) {
                a = document.createElement("object");
                a.style.display = "none";
                a.width = 0;
                a.height = 0;
                a.type = "application/x-googlegears";
                document.documentElement.appendChild(a)
            }
        }
    }
    if (!a) {
        return
    }
    if (!window.google) {
        window.google = {}
    }
    if (!google.gears) {
        google.gears = {
            factory: a
        }
    }
})();
(function (e, b, c, d) {
    var f = {};

    function a(h, k, m) {
        var g, j, l, o;
        j = google.gears.factory.create("beta.canvas");
        try {
            j.decode(h);
            if (!k.width) {
                k.width = j.width
            }
            if (!k.height) {
                k.height = j.height
            }
            o = Math.min(k.width / j.width, k.height / j.height);
            if (o < 1) {
                j.resize(Math.round(j.width * o), Math.round(j.height * o))
            } else {
                if (!k.quality || m !== "image/jpeg") {
                    return h
                }
            }
            if (k.quality) {
                return j.encode(m, {
                    quality: k.quality / 100
                })
            }
            return j.encode(m)
        } catch (n) { }
        return h
    }
    c.runtimes.Gears = c.addRuntime("gears", {
        getFeatures: function () {
            return {
                dragdrop: true,
                jpgresize: true,
                pngresize: true,
                chunks: true,
                progress: true,
                multipart: true,
                multi_selection: true
            }
        },
        init: function (l, n) {
            var m, h, g = false;
            if (!e.google || !google.gears) {
                return n({
                    success: false
                })
            }
            try {
                m = google.gears.factory.create("beta.desktop")
            } catch (k) {
                return n({
                    success: false
                })
            }
            function j(q) {
                var p, o, r = [],
                    s;
                for (o = 0; o < q.length; o++) {
                    p = q[o];
                    s = c.guid();
                    f[s] = p.blob;
                    r.push(new c.File(s, p.name, p.blob.length))
                }
                l.trigger("FilesAdded", r)
            }
            l.bind("PostInit", function () {
                var p = l.settings,
                    o = b.getElementById(p.drop_element);
                if (o) {
                    c.addEvent(o, "dragover", function (q) {
                        m.setDropEffect(q, "copy");
                        q.preventDefault()
                    }, l.id);
                    c.addEvent(o, "drop", function (r) {
                        var q = m.getDragData(r, "application/x-gears-files");
                        if (q) {
                            j(q.files)
                        }
                        r.preventDefault()
                    }, l.id);
                    o = 0
                }
                c.addEvent(b.getElementById(p.browse_button), "click", function (u) {
                    var t = [],
                        r, q, s;
                    u.preventDefault();
                    if (g) {
                        return
                    }
                    no_type_restriction: for (r = 0; r < p.filters.length; r++) {
                        s = p.filters[r].extensions.split(",");
                        for (q = 0; q < s.length; q++) {
                            if (s[q] === "*") {
                                t = [];
                                break no_type_restriction
                            }
                            t.push("." + s[q])
                        }
                    }
                    m.openFiles(j, {
                        singleFile: !p.multi_selection,
                        filter: t
                    })
                }, l.id)
            });
            l.bind("CancelUpload", function () {
                if (h.abort) {
                    h.abort()
                }
            });
            l.bind("UploadFile", function (u, r) {
                var w = 0,
                    v, s, t = 0,
                    q = u.settings.resize,
                    o;
                if (q && /\.(png|jpg|jpeg)$/i.test(r.name)) {
                    f[r.id] = a(f[r.id], q, /\.png$/i.test(r.name) ? "image/png" : "image/jpeg")
                }
                r.size = f[r.id].length;
                s = u.settings.chunk_size;
                o = s > 0;
                v = Math.ceil(r.size / s);
                if (!o) {
                    s = r.size;
                    v = 1
                }
                function p() {
                    var C, y = u.settings.multipart,
                        x = 0,
                        B = {
                            name: r.target_name || r.name
                        }, z = u.settings.url;

                    function A(E) {
                        var D, J = "----pluploadboundary" + c.guid(),
                            G = "--",
                            I = "\r\n",
                            F, H;
                        if (y) {
                            h.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + J);
                            D = google.gears.factory.create("beta.blobbuilder");
                            c.each(c.extend(B, u.settings.multipart_params), function (L, K) {
                                D.append(G + J + I + 'Content-Disposition: form-data; name="' + K + '"' + I + I);
                                D.append(L + I)
                            });
                            H = c.mimeTypes[r.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream";
                            D.append(G + J + I + 'Content-Disposition: form-data; name="' + u.settings.file_data_name + '"; filename="' + r.name + '"' + I + "Content-Type: " + H + I + I);
                            D.append(E);
                            D.append(I + G + J + G + I);
                            F = D.getAsBlob();
                            x = F.length - E.length;
                            E = F
                        }
                        h.send(E)
                    }
                    if (r.status == c.DONE || r.status == c.FAILED || u.state == c.STOPPED) {
                        return
                    }
                    if (o) {
                        B.chunk = w;
                        B.chunks = v
                    }
                    C = Math.min(s, r.size - (w * s));
                    if (!y) {
                        z = c.buildUrl(u.settings.url, B)
                    }
                    h = google.gears.factory.create("beta.httprequest");
                    h.open("POST", z);
                    if (!y) {
                        h.setRequestHeader("Content-Disposition", 'attachment; filename="' + r.name + '"');
                        h.setRequestHeader("Content-Type", "application/octet-stream")
                    }
                    c.each(u.settings.headers, function (E, D) {
                        h.setRequestHeader(D, E)
                    });
                    h.upload.onprogress = function (D) {
                        r.loaded = t + D.loaded - x;
                        u.trigger("UploadProgress", r)
                    };
                    h.onreadystatechange = function () {
                        var D;
                        if (h.readyState == 4 && u.state !== c.STOPPED) {
                            if (h.status == 200) {
                                D = {
                                    chunk: w,
                                    chunks: v,
                                    response: h.responseText,
                                    status: h.status
                                };
                                u.trigger("ChunkUploaded", r, D);
                                if (D.cancelled) {
                                    r.status = c.FAILED;
                                    return
                                }
                                t += C;
                                if (++w >= v) {
                                    r.status = c.DONE;
                                    u.trigger("FileUploaded", r, {
                                        response: h.responseText,
                                        status: h.status
                                    })
                                } else {
                                    p()
                                }
                            } else {
                                var err = "HTTP Error.";
                                var xhr = this;
                                try {
                                    var json = xhr.responseText;
                                    var rpc = JSON.parse(json);
                                    err = rpc.error.message;
                                }
                                catch (ex) { }
                                u.trigger("Error", {
                                    code: c.HTTP_ERROR,
                                    message: c.translate(err),
                                    file: r,
                                    chunk: w,
                                    chunks: v,
                                    status: h.status
                                })
                            }
                        }
                    };
                    if (w < v) {
                        A(f[r.id].slice(w * s, C))
                    }
                }
                p()
            });
            l.bind("DisableBrowse", function (o, p) {
                g = p
            });
            l.bind("Destroy", function (o) {
                var p, q, r = {
                    browseButton: o.settings.browse_button,
                    dropElm: o.settings.drop_element
                };
                for (p in r) {
                    q = b.getElementById(r[p]);
                    if (q) {
                        c.removeAllEvents(q, o.id)
                    }
                }
            });
            n({
                success: true
            })
        }
    })
})(window, document, plupload);
(function (g, b, d, e) {
    var a = {}, h = {};

    function c(o) {
        var n, m = typeof o,
            j, l, k;
        if (o === e || o === null) {
            return "null"
        }
        if (m === "string") {
            n = "\bb\tt\nn\ff\rr\"\"''\\\\";
            return '"' + o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g, function (r, q) {
                var p = n.indexOf(q);
                if (p + 1) {
                    return "\\" + n.charAt(p + 1)
                }
                r = q.charCodeAt().toString(16);
                return "\\u" + "0000".substring(r.length) + r
            }) + '"'
        }
        if (m == "object") {
            j = o.length !== e;
            n = "";
            if (j) {
                for (l = 0; l < o.length; l++) {
                    if (n) {
                        n += ","
                    }
                    n += c(o[l])
                }
                n = "[" + n + "]"
            } else {
                for (k in o) {
                    if (o.hasOwnProperty(k)) {
                        if (n) {
                            n += ","
                        }
                        n += c(k) + ":" + c(o[k])
                    }
                }
                n = "{" + n + "}"
            }
            return n
        }
        return "" + o
    }
    function f(s) {
        var v = false,
            j = null,
            o = null,
            k, l, m, u, n, q = 0;
        try {
            try {
                o = new ActiveXObject("AgControl.AgControl");
                if (o.IsVersionSupported(s)) {
                    v = true
                }
                o = null
            } catch (r) {
                var p = navigator.plugins["Silverlight Plug-In"];
                if (p) {
                    k = p.description;
                    if (k === "1.0.30226.2") {
                        k = "2.0.30226.2"
                    }
                    l = k.split(".");
                    while (l.length > 3) {
                        l.pop()
                    }
                    while (l.length < 4) {
                        l.push(0)
                    }
                    m = s.split(".");
                    while (m.length > 4) {
                        m.pop()
                    }
                    do {
                        u = parseInt(m[q], 10);
                        n = parseInt(l[q], 10);
                        q++
                    } while (q < m.length && u === n);
                    if (u <= n && !isNaN(u)) {
                        v = true
                    }
                }
            }
        } catch (t) {
            v = false
        }
        return v
    }
    d.silverlight = {
        trigger: function (n, k) {
            var m = a[n],
                l, j;
            if (m) {
                j = d.toArray(arguments).slice(1);
                j[0] = "Silverlight:" + k;
                setTimeout(function () {
                    m.trigger.apply(m, j)
                }, 0)
            }
        }
    };
    d.runtimes.Silverlight = d.addRuntime("silverlight", {
        getFeatures: function () {
            return {
                jpgresize: true,
                pngresize: true,
                chunks: true,
                progress: true,
                multipart: true,
                multi_selection: true
            }
        },
        init: function (p, q) {
            var o, m = "",
                n = p.settings.filters,
                l, k = b.body;
            if (!f("2.0.31005.0") || (g.opera && g.opera.buildNumber)) {
                q({
                    success: false
                });
                return
            }
            h[p.id] = false;
            a[p.id] = p;
            o = b.createElement("div");
            o.id = p.id + "_silverlight_container";
            d.extend(o.style, {
                position: "absolute",
                top: "0px",
                background: p.settings.shim_bgcolor || "transparent",
                zIndex: 99999,
                width: "100px",
                height: "100px",
                overflow: "hidden",
                opacity: p.settings.shim_bgcolor || b.documentMode > 8 ? "" : 0.01
            });
            o.className = "plupload silverlight";
            if (p.settings.container) {
                k = b.getElementById(p.settings.container);
                if (d.getStyle(k, "position") === "static") {
                    k.style.position = "relative"
                }
            }
            k.appendChild(o);
            for (l = 0; l < n.length; l++) {
                m += (m != "" ? "|" : "") + n[l].title + " | *." + n[l].extensions.replace(/,/g, ";*.")
            }
            o.innerHTML = '<object id="' + p.id + '_silverlight" data="data:application/x-silverlight," type="application/x-silverlight-2" style="outline:none;" width="1024" height="1024"><param name="source" value="' + p.settings.silverlight_xap_url + '"/><param name="background" value="Transparent"/><param name="windowless" value="true"/><param name="enablehtmlaccess" value="true"/><param name="initParams" value="id=' + p.id + ",filter=" + m + ",multiselect=" + p.settings.multi_selection + '"/></object>';

            function j() {
                return b.getElementById(p.id + "_silverlight").content.Upload
            }
            p.bind("Silverlight:Init", function () {
                var r, s = {};
                if (h[p.id]) {
                    return
                }
                h[p.id] = true;
                p.bind("Silverlight:StartSelectFiles", function (t) {
                    r = []
                });
                p.bind("Silverlight:SelectFile", function (t, w, u, v) {
                    var x;
                    x = d.guid();
                    s[x] = w;
                    s[w] = x;
                    r.push(new d.File(x, u, v))
                });
                p.bind("Silverlight:SelectSuccessful", function () {
                    if (r.length) {
                        p.trigger("FilesAdded", r)
                    }
                });
                p.bind("Silverlight:UploadChunkError", function (t, w, u, x, v) {
                    p.trigger("Error", {
                        code: d.IO_ERROR,
                        message: "IO Error.",
                        details: v,
                        file: t.getFile(s[w])
                    })
                });
                p.bind("Silverlight:UploadFileProgress", function (t, x, u, w) {
                    var v = t.getFile(s[x]);
                    if (v.status != d.FAILED) {
                        v.size = w;
                        v.loaded = u;
                        t.trigger("UploadProgress", v)
                    }
                });
                p.bind("Refresh", function (t) {
                    var u, v, w;
                    u = b.getElementById(t.settings.browse_button);
                    if (u) {
                        v = d.getPos(u, b.getElementById(t.settings.container));
                        w = d.getSize(u);
                        d.extend(b.getElementById(t.id + "_silverlight_container").style, {
                            top: v.y + "px",
                            left: v.x + "px",
                            width: w.w + "px",
                            height: w.h + "px"
                        })
                    }
                });
                p.bind("Silverlight:UploadChunkSuccessful", function (t, w, u, z, y) {
                    var x, v = t.getFile(s[w]);
                    x = {
                        chunk: u,
                        chunks: z,
                        response: y
                    };
                    t.trigger("ChunkUploaded", v, x);
                    if (v.status != d.FAILED && t.state !== d.STOPPED) {
                        j().UploadNextChunk()
                    }
                    if (u == z - 1) {
                        v.status = d.DONE;
                        t.trigger("FileUploaded", v, {
                            response: y
                        })
                    }
                });
                p.bind("Silverlight:UploadSuccessful", function (t, w, u) {
                    var v = t.getFile(s[w]);
                    v.status = d.DONE;
                    t.trigger("FileUploaded", v, {
                        response: u
                    })
                });
                p.bind("FilesRemoved", function (t, v) {
                    var u;
                    for (u = 0; u < v.length; u++) {
                        j().RemoveFile(s[v[u].id])
                    }
                });
                p.bind("UploadFile", function (t, v) {
                    var w = t.settings,
                        u = w.resize || {};
                    j().UploadFile(s[v.id], t.settings.url, c({
                        name: v.target_name || v.name,
                        mime: d.mimeTypes[v.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream",
                        chunk_size: w.chunk_size,
                        image_width: u.width,
                        image_height: u.height,
                        image_quality: u.quality,
                        multipart: !!w.multipart,
                        multipart_params: w.multipart_params || {},
                        file_data_name: w.file_data_name,
                        headers: w.headers
                    }))
                });
                p.bind("CancelUpload", function () {
                    j().CancelUpload()
                });
                p.bind("Silverlight:MouseEnter", function (t) {
                    var u, v;
                    u = b.getElementById(p.settings.browse_button);
                    v = t.settings.browse_button_hover;
                    if (u && v) {
                        d.addClass(u, v)
                    }
                });
                p.bind("Silverlight:MouseLeave", function (t) {
                    var u, v;
                    u = b.getElementById(p.settings.browse_button);
                    v = t.settings.browse_button_hover;
                    if (u && v) {
                        d.removeClass(u, v)
                    }
                });
                p.bind("Silverlight:MouseLeftButtonDown", function (t) {
                    var u, v;
                    u = b.getElementById(p.settings.browse_button);
                    v = t.settings.browse_button_active;
                    if (u && v) {
                        d.addClass(u, v);
                        d.addEvent(b.body, "mouseup", function () {
                            d.removeClass(u, v)
                        })
                    }
                });
                p.bind("Sliverlight:StartSelectFiles", function (t) {
                    var u, v;
                    u = b.getElementById(p.settings.browse_button);
                    v = t.settings.browse_button_active;
                    if (u && v) {
                        d.removeClass(u, v)
                    }
                });
                p.bind("DisableBrowse", function (t, u) {
                    j().DisableBrowse(u)
                });
                p.bind("Destroy", function (t) {
                    var u;
                    d.removeAllEvents(b.body, t.id);
                    delete h[t.id];
                    delete a[t.id];
                    u = b.getElementById(t.id + "_silverlight_container");
                    if (u) {
                        u.parentNode.removeChild(u)
                    }
                });
                q({
                    success: true
                })
            })
        }
    })
})(window, document, plupload);
(function (f, b, d, e) {
    var a = {}, g = {};

    function c() {
        var h;
        try {
            h = navigator.plugins["Shockwave Flash"];
            h = h.description
        } catch (k) {
            try {
                h = new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")
            } catch (j) {
                h = "0.0"
            }
        }
        h = h.match(/\d+/g);
        return parseFloat(h[0] + "." + h[1])
    }
    d.flash = {
        trigger: function (k, h, j) {
            setTimeout(function () {
                var n = a[k],
                    m, l;
                if (n) {
                    n.trigger("Flash:" + h, j)
                }
            }, 0)
        }
    };
    d.runtimes.Flash = d.addRuntime("flash", {
        getFeatures: function () {
            return {
                jpgresize: true,
                pngresize: true,
                maxWidth: 8091,
                maxHeight: 8091,
                chunks: true,
                progress: true,
                multipart: true,
                multi_selection: true
            }
        },
        init: function (n, p) {
            var l, m, h = 0,
                j = b.body;
            if (c() < 10) {
                p({
                    success: false
                });
                return
            }
            g[n.id] = false;
            a[n.id] = n;
            l = b.getElementById(n.settings.browse_button);
            m = b.createElement("div");
            m.id = n.id + "_flash_container";
            d.extend(m.style, {
                position: "absolute",
                top: "0px",
                background: n.settings.shim_bgcolor || "transparent",
                zIndex: 99999,
                width: "100%",
                height: "100%"
            });
            m.className = "plupload flash";
            if (n.settings.container) {
                j = b.getElementById(n.settings.container);
                if (d.getStyle(j, "position") === "static") {
                    j.style.position = "relative"
                }
            }
            j.appendChild(m);
            (function () {
                var q, r;
                q = '<object id="' + n.id + '_flash" type="application/x-shockwave-flash" data="' + n.settings.flash_swf_url + '" ';
                if (d.ua.ie) {
                    q += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '
                }
                q += 'width="100%" height="100%" style="outline:0"><param name="movie" value="' + n.settings.flash_swf_url + '" /><param name="flashvars" value="id=' + escape(n.id) + '" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /></object>';
                if (d.ua.ie) {
                    r = b.createElement("div");
                    m.appendChild(r);
                    r.outerHTML = q;
                    r = null
                } else {
                    m.innerHTML = q
                }
            }());

            function o() {
                return b.getElementById(n.id + "_flash")
            }
            function k() {
                if (h++ > 5000) {
                    p({
                        success: false
                    });
                    return
                }
                if (g[n.id] === false) {
                    setTimeout(k, 1)
                }
            }
            k();
            l = m = null;
            n.bind("Destroy", function (q) {
                var r;
                d.removeAllEvents(b.body, q.id);
                delete g[q.id];
                delete a[q.id];
                r = b.getElementById(q.id + "_flash_container");
                if (r) {
                    r.parentNode.removeChild(r)
                }
            });
            n.bind("Flash:Init", function () {
                var s = {}, r;
                try {
                    o().setFileFilters(n.settings.filters, n.settings.multi_selection)
                } catch (q) {
                    p({
                        success: false
                    });
                    return
                }
                if (g[n.id]) {
                    return
                }
                g[n.id] = true;
                n.bind("UploadFile", function (t, v) {
                    var w = t.settings,
                        u = n.settings.resize || {};
                    o().uploadFile(s[v.id], w.url, {
                        name: v.target_name || v.name,
                        mime: d.mimeTypes[v.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream",
                        chunk_size: w.chunk_size,
                        width: u.width,
                        height: u.height,
                        quality: u.quality,
                        multipart: w.multipart,
                        multipart_params: w.multipart_params || {},
                        file_data_name: w.file_data_name,
                        format: /\.(jpg|jpeg)$/i.test(v.name) ? "jpg" : "png",
                        headers: w.headers,
                        urlstream_upload: w.urlstream_upload
                    })
                });
                n.bind("CancelUpload", function () {
                    o().cancelUpload()
                });
                n.bind("Flash:UploadProcess", function (u, t) {
                    var v = u.getFile(s[t.id]);
                    if (v.status != d.FAILED) {
                        v.loaded = t.loaded;
                        v.size = t.size;
                        u.trigger("UploadProgress", v)
                    }
                });
                n.bind("Flash:UploadChunkComplete", function (t, v) {
                    var w, u = t.getFile(s[v.id]);
                    w = {
                        chunk: v.chunk,
                        chunks: v.chunks,
                        response: v.text
                    };
                    t.trigger("ChunkUploaded", u, w);
                    if (u.status !== d.FAILED && t.state !== d.STOPPED) {
                        o().uploadNextChunk()
                    }
                    if (v.chunk == v.chunks - 1) {
                        u.status = d.DONE;
                        t.trigger("FileUploaded", u, {
                            response: v.text
                        })
                    }
                });
                n.bind("Flash:SelectFiles", function (t, w) {
                    var v, u, x = [],
                        y;
                    for (u = 0; u < w.length; u++) {
                        v = w[u];
                        y = d.guid();
                        s[y] = v.id;
                        s[v.id] = y;
                        x.push(new d.File(y, v.name, v.size))
                    }
                    if (x.length) {
                        n.trigger("FilesAdded", x)
                    }
                });
                n.bind("Flash:SecurityError", function (t, u) {
                    n.trigger("Error", {
                        code: d.SECURITY_ERROR,
                        message: d.translate("Security error."),
                        details: u.message,
                        file: n.getFile(s[u.id])
                    })
                });
                n.bind("Flash:GenericError", function (t, u) {
                    n.trigger("Error", {
                        code: d.GENERIC_ERROR,
                        message: d.translate("Generic error."),
                        details: u.message,
                        file: n.getFile(s[u.id])
                    })
                });
                n.bind("Flash:IOError", function (t, u) {
                    n.trigger("Error", {
                        code: d.IO_ERROR,
                        message: d.translate("IO error."),
                        details: u.message,
                        file: n.getFile(s[u.id])
                    })
                });
                n.bind("Flash:ImageError", function (t, u) {
                    n.trigger("Error", {
                        code: parseInt(u.code, 10),
                        message: d.translate("Image error."),
                        file: n.getFile(s[u.id])
                    })
                });
                n.bind("Flash:StageEvent:rollOver", function (t) {
                    var u, v;
                    u = b.getElementById(n.settings.browse_button);
                    v = t.settings.browse_button_hover;
                    if (u && v) {
                        d.addClass(u, v)
                    }
                });
                n.bind("Flash:StageEvent:rollOut", function (t) {
                    var u, v;
                    u = b.getElementById(n.settings.browse_button);
                    v = t.settings.browse_button_hover;
                    if (u && v) {
                        d.removeClass(u, v)
                    }
                });
                n.bind("Flash:StageEvent:mouseDown", function (t) {
                    var u, v;
                    u = b.getElementById(n.settings.browse_button);
                    v = t.settings.browse_button_active;
                    if (u && v) {
                        d.addClass(u, v);
                        d.addEvent(b.body, "mouseup", function () {
                            d.removeClass(u, v)
                        }, t.id)
                    }
                });
                n.bind("Flash:StageEvent:mouseUp", function (t) {
                    var u, v;
                    u = b.getElementById(n.settings.browse_button);
                    v = t.settings.browse_button_active;
                    if (u && v) {
                        d.removeClass(u, v)
                    }
                });
                n.bind("Flash:ExifData", function (t, u) {
                    n.trigger("ExifData", n.getFile(s[u.id]), u.data)
                });
                n.bind("Flash:GpsData", function (t, u) {
                    n.trigger("GpsData", n.getFile(s[u.id]), u.data)
                });
                n.bind("QueueChanged", function (t) {
                    n.refresh()
                });
                n.bind("FilesRemoved", function (t, v) {
                    var u;
                    for (u = 0; u < v.length; u++) {
                        o().removeFile(s[v[u].id])
                    }
                });
                n.bind("StateChanged", function (t) {
                    n.refresh()
                });
                n.bind("Refresh", function (t) {
                    var u, v, w;
                    o().setFileFilters(n.settings.filters, n.settings.multi_selection);
                    u = b.getElementById(t.settings.browse_button);
                    if (u) {
                        v = d.getPos(u, b.getElementById(t.settings.container));
                        w = d.getSize(u);
                        d.extend(b.getElementById(t.id + "_flash_container").style, {
                            top: v.y + "px",
                            left: v.x + "px",
                            width: w.w + "px",
                            height: w.h + "px"
                        })
                    }
                });
                n.bind("DisableBrowse", function (t, u) {
                    o().disableBrowse(u)
                });
                p({
                    success: true
                })
            })
        }
    })
})(window, document, plupload);
(function (a) {
    a.runtimes.BrowserPlus = a.addRuntime("browserplus", {
        getFeatures: function () {
            return {
                dragdrop: true,
                jpgresize: true,
                pngresize: true,
                chunks: true,
                progress: true,
                multipart: true,
                multi_selection: true
            }
        },
        init: function (g, j) {
            var e = window.BrowserPlus,
                h = {}, d = g.settings,
                c = d.resize;

            function f(o) {
                var n, m, k = [],
                    l, p;
                for (m = 0; m < o.length; m++) {
                    l = o[m];
                    p = a.guid();
                    h[p] = l;
                    k.push(new a.File(p, l.name, l.size))
                }
                if (m) {
                    g.trigger("FilesAdded", k)
                }
            }
            function b() {
                var k = false;
                g.bind("PostInit", function () {
                    var o, m = d.drop_element,
                        q = g.id + "_droptarget",
                        l = document.getElementById(m),
                        n;

                    function r(t, s) {
                        e.DragAndDrop.AddDropTarget({
                            id: t
                        }, function (u) {
                            e.DragAndDrop.AttachCallbacks({
                                id: t,
                                hover: function (v) {
                                    if (!v && s) {
                                        s()
                                    }
                                },
                                drop: function (v) {
                                    if (s) {
                                        s()
                                    }
                                    f(v)
                                }
                            }, function () { })
                        })
                    }
                    function p() {
                        document.getElementById(q).style.top = "-1000px"
                    }
                    if (l) {
                        if (document.attachEvent && (/MSIE/gi).test(navigator.userAgent)) {
                            o = document.createElement("div");
                            o.setAttribute("id", q);
                            a.extend(o.style, {
                                position: "absolute",
                                top: "-1000px",
                                background: "red",
                                filter: "alpha(opacity=0)",
                                opacity: 0
                            });
                            document.body.appendChild(o);
                            a.addEvent(l, "dragenter", function (t) {
                                var s, u;
                                s = document.getElementById(m);
                                u = a.getPos(s);
                                a.extend(document.getElementById(q).style, {
                                    top: u.y + "px",
                                    left: u.x + "px",
                                    width: s.offsetWidth + "px",
                                    height: s.offsetHeight + "px"
                                })
                            });
                            r(q, p)
                        } else {
                            r(m)
                        }
                    }
                    a.addEvent(document.getElementById(d.browse_button), "click", function (y) {
                        var s = [],
                            u, t, x = d.filters,
                            w, v;
                        y.preventDefault();
                        if (k) {
                            return
                        }
                        no_type_restriction: for (u = 0; u < x.length; u++) {
                            w = x[u].extensions.split(",");
                            for (t = 0; t < w.length; t++) {
                                if (w[t] === "*") {
                                    s = [];
                                    break no_type_restriction
                                }
                                v = a.mimeTypes[w[t]];
                                if (v && a.inArray(v, s) === -1) {
                                    s.push(a.mimeTypes[w[t]])
                                }
                            }
                        }
                        e.FileBrowse.OpenBrowseDialog({
                            mimeTypes: s
                        }, function (z) {
                            if (z.success) {
                                f(z.value)
                            }
                        })
                    });
                    l = o = null
                });
                g.bind("CancelUpload", function () {
                    e.Uploader.cancel({}, function () { })
                });
                g.bind("DisableBrowse", function (l, m) {
                    k = m
                });
                g.bind("UploadFile", function (o, l) {
                    var n = h[l.id],
                        t = {}, m = o.settings.chunk_size,
                        p, q = [];

                    function s(u, w) {
                        var v;
                        if (l.status == a.FAILED) {
                            return
                        }
                        t.name = l.target_name || l.name;
                        if (m) {
                            t.chunk = "" + u;
                            t.chunks = "" + w
                        }
                        v = q.shift();
                        e.Uploader.upload({
                            url: o.settings.url,
                            files: {
                                file: v
                            },
                            cookies: document.cookies,
                            postvars: a.extend(t, o.settings.multipart_params),
                            progressCallback: function (z) {
                                var y, x = 0;
                                p[u] = parseInt(z.filePercent * v.size / 100, 10);
                                for (y = 0; y < p.length; y++) {
                                    x += p[y]
                                }
                                l.loaded = x;
                                o.trigger("UploadProgress", l)
                            }
                        }, function (y) {
                            var x, z;
                            if (y.success) {
                                x = y.value.statusCode;
                                if (m) {
                                    o.trigger("ChunkUploaded", l, {
                                        chunk: u,
                                        chunks: w,
                                        response: y.value.body,
                                        status: x
                                    })
                                }
                                if (q.length > 0) {
                                    s(++u, w)
                                } else {
                                    l.status = a.DONE;
                                    o.trigger("FileUploaded", l, {
                                        response: y.value.body,
                                        status: x
                                    });
                                    if (x >= 400) {
                                        debugger;
                                        o.trigger("Error", {
                                            code: a.HTTP_ERROR,
                                            message: a.translate("HTTP Error."),
                                            file: l,
                                            status: x
                                        })
                                    }
                                }
                            } else {
                                o.trigger("Error", {
                                    code: a.GENERIC_ERROR,
                                    message: a.translate("Generic Error."),
                                    file: l,
                                    details: y.error
                                })
                            }
                        })
                    }
                    function r(u) {
                        l.size = u.size;
                        if (m) {
                            e.FileAccess.chunk({
                                file: u,
                                chunkSize: m
                            }, function (x) {
                                if (x.success) {
                                    var y = x.value,
                                        v = y.length;
                                    p = Array(v);
                                    for (var w = 0; w < v; w++) {
                                        p[w] = 0;
                                        q.push(y[w])
                                    }
                                    s(0, v)
                                }
                            })
                        } else {
                            p = Array(1);
                            q.push(u);
                            s(0, 1)
                        }
                    }
                    if (c && /\.(png|jpg|jpeg)$/i.test(l.name)) {
                        BrowserPlus.ImageAlter.transform({
                            file: n,
                            quality: c.quality || 90,
                            actions: [{
                                scale: {
                                    maxwidth: c.width,
                                    maxheight: c.height
                                }
                            }]
                        }, function (u) {
                            if (u.success) {
                                r(u.value.file)
                            }
                        })
                    } else {
                        r(n)
                    }
                });
                j({
                    success: true
                })
            }
            if (e) {
                e.init(function (l) {
                    var k = [{
                        service: "Uploader",
                        version: "3"
                    }, {
                        service: "DragAndDrop",
                        version: "1"
                    }, {
                        service: "FileBrowse",
                        version: "1"
                    }, {
                        service: "FileAccess",
                        version: "2"
                    }];
                    if (c) {
                        k.push({
                            service: "ImageAlter",
                            version: "4"
                        })
                    }
                    if (l.success) {
                        e.require({
                            services: k
                        }, function (m) {
                            if (m.success) {
                                b()
                            } else {
                                j()
                            }
                        })
                    } else {
                        j()
                    }
                })
            } else {
                j()
            }
        }
    })
})(plupload);
(function (h, k, j, e) {
    var c = {}, g;

    function m(o, p) {
        var n;
        if ("FileReader" in h) {
            n = new FileReader();
            n.readAsDataURL(o);
            n.onload = function () {
                p(n.result)
            }
        } else {
            return p(o.getAsDataURL())
        }
    }
    function l(o, p) {
        var n;
        if ("FileReader" in h) {
            n = new FileReader();
            n.readAsBinaryString(o);
            n.onload = function () {
                p(n.result)
            }
        } else {
            return p(o.getAsBinary())
        }
    }
    function d(r, p, n, v) {
        var q, o, u, s, t = this;
        m(c[r.id], function (w) {
            q = k.createElement("canvas");
            q.style.display = "none";
            k.body.appendChild(q);
            o = q.getContext("2d");
            u = new Image();
            u.onerror = u.onabort = function () {
                v({
                    success: false
                })
            };
            u.onload = function () {
                var C, x, z, y, B;
                if (!p.width) {
                    p.width = u.width
                }
                if (!p.height) {
                    p.height = u.height
                }
                s = Math.min(p.width / u.width, p.height / u.height);
                if (s < 1) {
                    C = Math.round(u.width * s);
                    x = Math.round(u.height * s)
                } else {
                    if (p.quality && n === "image/jpeg") {
                        C = u.width;
                        x = u.height
                    } else {
                        v({
                            success: false
                        });
                        return
                    }
                }
                q.width = C;
                q.height = x;
                o.drawImage(u, 0, 0, C, x);
                if (n === "image/jpeg") {
                    y = new f(atob(w.substring(w.indexOf("base64,") + 7)));
                    if (y.headers && y.headers.length) {
                        B = new a();
                        if (B.init(y.get("exif")[0])) {
                            B.setExif("PixelXDimension", C);
                            B.setExif("PixelYDimension", x);
                            y.set("exif", B.getBinary());
                            if (t.hasEventListener("ExifData")) {
                                t.trigger("ExifData", r, B.EXIF())
                            }
                            if (t.hasEventListener("GpsData")) {
                                t.trigger("GpsData", r, B.GPS())
                            }
                        }
                    }
                }
                if (p.quality && n === "image/jpeg") {
                    try {
                        w = q.toDataURL(n, p.quality / 100)
                    } catch (A) {
                        w = q.toDataURL(n)
                    }
                } else {
                    w = q.toDataURL(n)
                }
                w = w.substring(w.indexOf("base64,") + 7);
                w = atob(w);
                if (y && y.headers && y.headers.length) {
                    w = y.restore(w);
                    y.purge()
                }
                q.parentNode.removeChild(q);
                v({
                    success: true,
                    data: w
                })
            };
            u.src = w
        })
    }
    j.runtimes.Html5 = j.addRuntime("html5", {
        getFeatures: function () {
            var s, o, r, q, p, n;
            o = r = p = n = false;
            if (h.XMLHttpRequest) {
                s = new XMLHttpRequest();
                r = !!s.upload;
                o = !!(s.sendAsBinary || s.upload)
            }
            if (o) {
                q = !!(s.sendAsBinary || (h.Uint8Array && h.ArrayBuffer));
                p = !!(File && (File.prototype.getAsDataURL || h.FileReader) && q);
                n = !!(File && (File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice))
            }
            g = j.ua.safari && j.ua.windows;
            return {
                html5: o,
                dragdrop: (function () {
                    var t = k.createElement("div");
                    return ("draggable" in t) || ("ondragstart" in t && "ondrop" in t)
                }()),
                jpgresize: p,
                pngresize: p,
                multipart: p || !!h.FileReader || !!h.FormData,
                canSendBinary: q,
                cantSendBlobInFormData: !!(j.ua.gecko && h.FormData && h.FileReader && !FileReader.prototype.readAsArrayBuffer) || j.ua.android,
                progress: r,
                chunks: n,
                multi_selection: !(j.ua.safari && j.ua.windows),
                triggerDialog: (j.ua.gecko && h.FormData || j.ua.webkit)
            }
        },
        init: function (p, r) {
            var n, q;

            function o(w) {
                var u, t, v = [],
                    x, s = {};
                for (t = 0; t < w.length; t++) {
                    u = w[t];
                    if (s[u.name]) {
                        continue
                    }
                    s[u.name] = true;
                    x = j.guid();
                    c[x] = u;
                    v.push(new j.File(x, u.fileName || u.name, u.fileSize || u.size))
                }
                if (v.length) {
                    p.trigger("FilesAdded", v)
                }
            }
            n = this.getFeatures();
            if (!n.html5) {
                r({
                    success: false
                });
                return
            }
            p.bind("Init", function (w) {
                var G, F, C = [],
                    v, D, t = w.settings.filters,
                    u, B, s = k.body,
                    E;
                G = k.createElement("div");
                G.id = w.id + "_html5_container";
                j.extend(G.style, {
                    position: "absolute",
                    background: p.settings.shim_bgcolor || "transparent",
                    width: "100px",
                    height: "100px",
                    overflow: "hidden",
                    zIndex: 99999,
                    opacity: p.settings.shim_bgcolor ? "" : 0
                });
                G.className = "plupload html5";
                if (p.settings.container) {
                    s = k.getElementById(p.settings.container);
                    if (j.getStyle(s, "position") === "static") {
                        s.style.position = "relative"
                    }
                }
                s.appendChild(G);
                no_type_restriction: for (v = 0; v < t.length; v++) {
                    u = t[v].extensions.split(/,/);
                    for (D = 0; D < u.length; D++) {
                        if (u[D] === "*") {
                            C = [];
                            break no_type_restriction
                        }
                        B = j.mimeTypes[u[D]];
                        if (B && j.inArray(B, C) === -1) {
                            C.push(B)
                        }
                    }
                }
                G.innerHTML = '<input id="' + p.id + '_html5"  style="font-size:999px" type="file" accept="' + C.join(",") + '" ' + (p.settings.multi_selection && p.features.multi_selection ? 'multiple="multiple"' : "") + " />";
                G.scrollTop = 100;
                E = k.getElementById(p.id + "_html5");
                if (w.features.triggerDialog) {
                    j.extend(E.style, {
                        position: "absolute",
                        width: "100%",
                        height: "100%"
                    })
                } else {
                    j.extend(E.style, {
                        cssFloat: "right",
                        styleFloat: "right"
                    })
                }
                E.onchange = function () {
                    o(this.files);
                    this.value = ""
                };
                F = k.getElementById(w.settings.browse_button);
                if (F) {
                    var z = w.settings.browse_button_hover,
                        A = w.settings.browse_button_active,
                        x = w.features.triggerDialog ? F : G;
                    if (z) {
                        j.addEvent(x, "mouseover", function () {
                            j.addClass(F, z)
                        }, w.id);
                        j.addEvent(x, "mouseout", function () {
                            j.removeClass(F, z)
                        }, w.id)
                    }
                    if (A) {
                        j.addEvent(x, "mousedown", function () {
                            j.addClass(F, A)
                        }, w.id);
                        j.addEvent(k.body, "mouseup", function () {
                            j.removeClass(F, A)
                        }, w.id)
                    }
                    if (w.features.triggerDialog) {
                        j.addEvent(F, "click", function (H) {
                            var y = k.getElementById(w.id + "_html5");
                            if (y && !y.disabled) {
                                y.click()
                            }
                            H.preventDefault()
                        }, w.id)
                    }
                }
            });
            p.bind("PostInit", function () {
                var s = k.getElementById(p.settings.drop_element);
                if (s) {
                    if (g) {
                        j.addEvent(s, "dragenter", function (w) {
                            var v, t, u;
                            v = k.getElementById(p.id + "_drop");
                            if (!v) {
                                v = k.createElement("input");
                                v.setAttribute("type", "file");
                                v.setAttribute("id", p.id + "_drop");
                                v.setAttribute("multiple", "multiple");
                                j.addEvent(v, "change", function () {
                                    o(this.files);
                                    j.removeEvent(v, "change", p.id);
                                    v.parentNode.removeChild(v)
                                }, p.id);
                                j.addEvent(v, "dragover", function (x) {
                                    x.stopPropagation()
                                }, p.id);
                                s.appendChild(v)
                            }
                            t = j.getPos(s, k.getElementById(p.settings.container));
                            u = j.getSize(s);
                            if (j.getStyle(s, "position") === "static") {
                                j.extend(s.style, {
                                    position: "relative"
                                })
                            }
                            j.extend(v.style, {
                                position: "absolute",
                                display: "block",
                                top: 0,
                                left: 0,
                                width: u.w + "px",
                                height: u.h + "px",
                                opacity: 0
                            })
                        }, p.id);
                        return
                    }
                    j.addEvent(s, "dragover", function (t) {
                        t.preventDefault()
                    }, p.id);
                    j.addEvent(s, "drop", function (u) {
                        var t = u.dataTransfer;
                        if (t && t.files) {
                            o(t.files)
                        }
                        u.preventDefault()
                    }, p.id)
                }
            });
            p.bind("Refresh", function (s) {
                var t, u, v, x, w;
                t = k.getElementById(p.settings.browse_button);
                if (t) {
                    u = j.getPos(t, k.getElementById(s.settings.container));
                    v = j.getSize(t);
                    x = k.getElementById(p.id + "_html5_container");
                    j.extend(x.style, {
                        top: u.y + "px",
                        left: u.x + "px",
                        width: v.w + "px",
                        height: v.h + "px"
                    });
                    if (p.features.triggerDialog) {
                        if (j.getStyle(t, "position") === "static") {
                            j.extend(t.style, {
                                position: "relative"
                            })
                        }
                        w = parseInt(j.getStyle(t, "zIndex"), 10);
                        if (isNaN(w)) {
                            w = 0
                        }
                        j.extend(t.style, {
                            zIndex: w
                        });
                        j.extend(x.style, {
                            zIndex: w - 1
                        })
                    }
                }
            });
            p.bind("DisableBrowse", function (s, u) {
                var t = k.getElementById(s.id + "_html5");
                if (t) {
                    t.disabled = u
                }
            });
            p.bind("CancelUpload", function () {
                if (q && q.abort) {
                    q.abort()
                }
            });
            p.bind("UploadFile", function (s, u) {
                var v = s.settings,
                    y, t;

                function x(A, D, z) {
                    var B;
                    if (File.prototype.slice) {
                        try {
                            A.slice();
                            return A.slice(D, z)
                        } catch (C) {
                            return A.slice(D, z - D)
                        }
                    } else {
                        if (B = File.prototype.webkitSlice || File.prototype.mozSlice) {
                            return B.call(A, D, z)
                        } else {
                            return null
                        }
                    }
                }
                function w(A) {
                    var D = 0,
                        C = 0,
                        z = ("FileReader" in h) ? new FileReader : null;

                    function B() {
                        var J, N, L, M, I, K, F, E = s.settings.url;

                        function H(Q) {
                            if (q.sendAsBinary) {
                                q.sendAsBinary(Q)
                            } else {
                                if (s.features.canSendBinary) {
                                    var O = new Uint8Array(Q.length);
                                    for (var P = 0; P < Q.length; P++) {
                                        O[P] = (Q.charCodeAt(P) & 255)
                                    }
                                    q.send(O.buffer)
                                }
                            }
                        }
                        function G(P) {
                            var T = 0,
                                U = "----pluploadboundary" + j.guid(),
                                R, Q = "--",
                                S = "\r\n",
                                O = "";
                            q = new XMLHttpRequest;
                            if (q.upload) {
                                q.upload.onprogress = function (V) {
                                    u.loaded = Math.min(u.size, C + V.loaded - T);
                                    s.trigger("UploadProgress", u)
                                }
                            }
                            q.onreadystatechange = function () {
                                var V, X;
                                if (q.readyState == 4 && s.state !== j.STOPPED) {
                                    try {
                                        V = q.status
                                    } catch (W) {
                                        V = 0
                                    }
                                    if (V >= 400) {                                        
                                        var err = "HTTP Error.";
                                        var xhr = this;
                                        try {
                                            var json = xhr.responseText;
                                            var rpc = JSON.parse(json);
                                            err = rpc.error.message;
                                        }
                                        catch(ex) { }

                                        s.trigger("Error", {
                                            code: j.HTTP_ERROR,
                                            message: j.translate(err),
                                            file: u,
                                            status: V
                                        })
                                    } else {
                                        if (L) {
                                            X = {
                                                chunk: D,
                                                chunks: L,
                                                response: q.responseText,
                                                status: V
                                            };
                                            s.trigger("ChunkUploaded", u, X);
                                            C += K;
                                            if (X.cancelled) {
                                                u.status = j.FAILED;
                                                return
                                            }
                                            u.loaded = Math.min(u.size, (D + 1) * I)
                                        } else {
                                            u.loaded = u.size
                                        }
                                        s.trigger("UploadProgress", u);
                                        P = J = R = O = null;
                                        if (!L || ++D >= L) {
                                            u.status = j.DONE;
                                            s.trigger("FileUploaded", u, {
                                                response: q.responseText,
                                                status: V
                                            })
                                        } else {
                                            B()
                                        }
                                    }
                                }
                            };
                            if (s.settings.multipart && n.multipart) {
                                M.name = u.target_name || u.name;
                                q.open("post", E, true);
                                j.each(s.settings.headers, function (W, V) {
                                    q.setRequestHeader(V, W)
                                });
                                if (typeof (P) !== "string" && !!h.FormData) {
                                    R = new FormData();
                                    j.each(j.extend(M, s.settings.multipart_params), function (W, V) {
                                        R.append(V, W)
                                    });
                                    R.append(s.settings.file_data_name, P);
                                    q.send(R);
                                    return
                                }
                                if (typeof (P) === "string") {
                                    q.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + U);
                                    j.each(j.extend(M, s.settings.multipart_params), function (W, V) {
                                        O += Q + U + S + 'Content-Disposition: form-data; name="' + V + '"' + S + S;
                                        O += unescape(encodeURIComponent(W)) + S
                                    });
                                    F = j.mimeTypes[u.name.replace(/^.+\.([^.]+)/, "$1").toLowerCase()] || "application/octet-stream";
                                    O += Q + U + S + 'Content-Disposition: form-data; name="' + s.settings.file_data_name + '"; filename="' + unescape(encodeURIComponent(u.name)) + '"' + S + "Content-Type: " + F + S + S + P + S + Q + U + Q + S;
                                    T = O.length - P.length;
                                    P = O;
                                    H(P);
                                    return
                                }
                            }
                            E = j.buildUrl(s.settings.url, j.extend(M, s.settings.multipart_params));
                            q.open("post", E, true);
                            q.setRequestHeader("Content-Type", "application/octet-stream");
                            j.each(s.settings.headers, function (W, V) {
                                q.setRequestHeader(V, W)
                            });
                            if (typeof (P) === "string") {
                                H(P)
                            } else {
                                q.send(P)
                            }
                        }
                        if (u.status == j.DONE || u.status == j.FAILED || s.state == j.STOPPED) {
                            return
                        }
                        M = {
                            name: u.target_name || u.name
                        };
                        if (v.chunk_size && u.size > v.chunk_size && (n.chunks || typeof (A) == "string")) {
                            I = v.chunk_size;
                            L = Math.ceil(u.size / I);
                            K = Math.min(I, u.size - (D * I));
                            if (typeof (A) == "string") {
                                J = A.substring(D * I, D * I + K)
                            } else {
                                J = x(A, D * I, D * I + K)
                            }
                            M.chunk = D;
                            M.chunks = L
                        } else {
                            K = u.size;
                            J = A
                        }
                        if (s.settings.multipart && n.multipart && typeof (J) !== "string" && z && n.cantSendBlobInFormData && n.chunks && s.settings.chunk_size) {
                            z.onload = function () {
                                G(z.result)
                            };
                            z.readAsBinaryString(J)
                        } else {
                            G(J)
                        }
                    }
                    B()
                }
                y = c[u.id];
                if (n.jpgresize && s.settings.resize && /\.(png|jpg|jpeg)$/i.test(u.name)) {
                    d.call(s, u, s.settings.resize, /\.png$/i.test(u.name) ? "image/png" : "image/jpeg", function (z) {
                        if (z.success) {
                            u.size = z.data.length;
                            w(z.data)
                        } else {
                            if (n.chunks) {
                                w(y)
                            } else {
                                l(y, w)
                            }
                        }
                    })
                } else {
                    if (!n.chunks && n.jpgresize) {
                        l(y, w)
                    } else {
                        w(y)
                    }
                }
            });
            p.bind("Destroy", function (s) {
                var u, v, t = k.body,
                    w = {
                        inputContainer: s.id + "_html5_container",
                        inputFile: s.id + "_html5",
                        browseButton: s.settings.browse_button,
                        dropElm: s.settings.drop_element
                    };
                for (u in w) {
                    v = k.getElementById(w[u]);
                    if (v) {
                        j.removeAllEvents(v, s.id)
                    }
                }
                j.removeAllEvents(k.body, s.id);
                if (s.settings.container) {
                    t = k.getElementById(s.settings.container)
                }
                t.removeChild(k.getElementById(w.inputContainer))
            });
            r({
                success: true
            })
        }
    });

    function b() {
        var q = false,
            o;

        function r(t, v) {
            var s = q ? 0 : -8 * (v - 1),
                w = 0,
                u;
            for (u = 0; u < v; u++) {
                w |= (o.charCodeAt(t + u) << Math.abs(s + u * 8))
            }
            return w
        }
        function n(u, s, t) {
            var t = arguments.length === 3 ? t : o.length - s - 1;
            o = o.substr(0, s) + u + o.substr(t + s)
        }
        function p(t, u, w) {
            var x = "",
                s = q ? 0 : -8 * (w - 1),
                v;
            for (v = 0; v < w; v++) {
                x += String.fromCharCode((u >> Math.abs(s + v * 8)) & 255)
            }
            n(x, t, w)
        }
        return {
            II: function (s) {
                if (s === e) {
                    return q
                } else {
                    q = s
                }
            },
            init: function (s) {
                q = false;
                o = s
            },
            SEGMENT: function (s, u, t) {
                switch (arguments.length) {
                    case 1:
                        return o.substr(s, o.length - s - 1);
                    case 2:
                        return o.substr(s, u);
                    case 3:
                        n(t, s, u);
                        break;
                    default:
                        return o
                }
            },
            BYTE: function (s) {
                return r(s, 1)
            },
            SHORT: function (s) {
                return r(s, 2)
            },
            LONG: function (s, t) {
                if (t === e) {
                    return r(s, 4)
                } else {
                    p(s, t, 4)
                }
            },
            SLONG: function (s) {
                var t = r(s, 4);
                return (t > 2147483647 ? t - 4294967296 : t)
            },
            STRING: function (s, t) {
                var u = "";
                for (t += s; s < t; s++) {
                    u += String.fromCharCode(r(s, 1))
                }
                return u
            }
        }
    }
    function f(s) {
        var u = {
            65505: {
                app: "EXIF",
                name: "APP1",
                signature: "Exif\0"
            },
            65506: {
                app: "ICC",
                name: "APP2",
                signature: "ICC_PROFILE\0"
            },
            65517: {
                app: "IPTC",
                name: "APP13",
                signature: "Photoshop 3.0\0"
            }
        }, t = [],
            r, n, p = e,
            q = 0,
            o;
        r = new b();
        r.init(s);
        if (r.SHORT(0) !== 65496) {
            return
        }
        n = 2;
        o = Math.min(1048576, s.length);
        while (n <= o) {
            p = r.SHORT(n);
            if (p >= 65488 && p <= 65495) {
                n += 2;
                continue
            }
            if (p === 65498 || p === 65497) {
                break
            }
            q = r.SHORT(n + 2) + 2;
            if (u[p] && r.STRING(n + 4, u[p].signature.length) === u[p].signature) {
                t.push({
                    hex: p,
                    app: u[p].app.toUpperCase(),
                    name: u[p].name.toUpperCase(),
                    start: n,
                    length: q,
                    segment: r.SEGMENT(n, q)
                })
            }
            n += q
        }
        r.init(null);
        return {
            headers: t,
            restore: function (y) {
                r.init(y);
                var w = new f(y);
                if (!w.headers) {
                    return false
                }
                for (var x = w.headers.length; x > 0; x--) {
                    var z = w.headers[x - 1];
                    r.SEGMENT(z.start, z.length, "")
                }
                w.purge();
                n = r.SHORT(2) == 65504 ? 4 + r.SHORT(4) : 2;
                for (var x = 0, v = t.length; x < v; x++) {
                    r.SEGMENT(n, 0, t[x].segment);
                    n += t[x].length
                }
                return r.SEGMENT()
            },
            get: function (x) {
                var y = [];
                for (var w = 0, v = t.length; w < v; w++) {
                    if (t[w].app === x.toUpperCase()) {
                        y.push(t[w].segment)
                    }
                }
                return y
            },
            set: function (y, x) {
                var z = [];
                if (typeof (x) === "string") {
                    z.push(x)
                } else {
                    z = x
                }
                for (var w = ii = 0, v = t.length; w < v; w++) {
                    if (t[w].app === y.toUpperCase()) {
                        t[w].segment = z[ii];
                        t[w].length = z[ii].length;
                        ii++
                    }
                    if (ii >= z.length) {
                        break
                    }
                }
            },
            purge: function () {
                t = [];
                r.init(null)
            }
        }
    }
    function a() {
        var q, n, o = {}, t;
        q = new b();
        n = {
            tiff: {
                274: "Orientation",
                34665: "ExifIFDPointer",
                34853: "GPSInfoIFDPointer"
            },
            exif: {
                36864: "ExifVersion",
                40961: "ColorSpace",
                40962: "PixelXDimension",
                40963: "PixelYDimension",
                36867: "DateTimeOriginal",
                33434: "ExposureTime",
                33437: "FNumber",
                34855: "ISOSpeedRatings",
                37377: "ShutterSpeedValue",
                37378: "ApertureValue",
                37383: "MeteringMode",
                37384: "LightSource",
                37385: "Flash",
                41986: "ExposureMode",
                41987: "WhiteBalance",
                41990: "SceneCaptureType",
                41988: "DigitalZoomRatio",
                41992: "Contrast",
                41993: "Saturation",
                41994: "Sharpness"
            },
            gps: {
                0: "GPSVersionID",
                1: "GPSLatitudeRef",
                2: "GPSLatitude",
                3: "GPSLongitudeRef",
                4: "GPSLongitude"
            }
        };
        t = {
            ColorSpace: {
                1: "sRGB",
                0: "Uncalibrated"
            },
            MeteringMode: {
                0: "Unknown",
                1: "Average",
                2: "CenterWeightedAverage",
                3: "Spot",
                4: "MultiSpot",
                5: "Pattern",
                6: "Partial",
                255: "Other"
            },
            LightSource: {
                1: "Daylight",
                2: "Fliorescent",
                3: "Tungsten",
                4: "Flash",
                9: "Fine weather",
                10: "Cloudy weather",
                11: "Shade",
                12: "Daylight fluorescent (D 5700 - 7100K)",
                13: "Day white fluorescent (N 4600 -5400K)",
                14: "Cool white fluorescent (W 3900 - 4500K)",
                15: "White fluorescent (WW 3200 - 3700K)",
                17: "Standard light A",
                18: "Standard light B",
                19: "Standard light C",
                20: "D55",
                21: "D65",
                22: "D75",
                23: "D50",
                24: "ISO studio tungsten",
                255: "Other"
            },
            Flash: {
                0: "Flash did not fire.",
                1: "Flash fired.",
                5: "Strobe return light not detected.",
                7: "Strobe return light detected.",
                9: "Flash fired, compulsory flash mode",
                13: "Flash fired, compulsory flash mode, return light not detected",
                15: "Flash fired, compulsory flash mode, return light detected",
                16: "Flash did not fire, compulsory flash mode",
                24: "Flash did not fire, auto mode",
                25: "Flash fired, auto mode",
                29: "Flash fired, auto mode, return light not detected",
                31: "Flash fired, auto mode, return light detected",
                32: "No flash function",
                65: "Flash fired, red-eye reduction mode",
                69: "Flash fired, red-eye reduction mode, return light not detected",
                71: "Flash fired, red-eye reduction mode, return light detected",
                73: "Flash fired, compulsory flash mode, red-eye reduction mode",
                77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",
                79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",
                89: "Flash fired, auto mode, red-eye reduction mode",
                93: "Flash fired, auto mode, return light not detected, red-eye reduction mode",
                95: "Flash fired, auto mode, return light detected, red-eye reduction mode"
            },
            ExposureMode: {
                0: "Auto exposure",
                1: "Manual exposure",
                2: "Auto bracket"
            },
            WhiteBalance: {
                0: "Auto white balance",
                1: "Manual white balance"
            },
            SceneCaptureType: {
                0: "Standard",
                1: "Landscape",
                2: "Portrait",
                3: "Night scene"
            },
            Contrast: {
                0: "Normal",
                1: "Soft",
                2: "Hard"
            },
            Saturation: {
                0: "Normal",
                1: "Low saturation",
                2: "High saturation"
            },
            Sharpness: {
                0: "Normal",
                1: "Soft",
                2: "Hard"
            },
            GPSLatitudeRef: {
                N: "North latitude",
                S: "South latitude"
            },
            GPSLongitudeRef: {
                E: "East longitude",
                W: "West longitude"
            }
        };

        function p(u, C) {
            var w = q.SHORT(u),
                z, F, G, B, A, v, x, D, E = [],
                y = {};
            for (z = 0; z < w; z++) {
                x = v = u + 12 * z + 2;
                G = C[q.SHORT(x)];
                if (G === e) {
                    continue
                }
                B = q.SHORT(x += 2);
                A = q.LONG(x += 2);
                x += 4;
                E = [];
                switch (B) {
                    case 1:
                    case 7:
                        if (A > 4) {
                            x = q.LONG(x) + o.tiffHeader
                        }
                        for (F = 0; F < A; F++) {
                            E[F] = q.BYTE(x + F)
                        }
                        break;
                    case 2:
                        if (A > 4) {
                            x = q.LONG(x) + o.tiffHeader
                        }
                        y[G] = q.STRING(x, A - 1);
                        continue;
                    case 3:
                        if (A > 2) {
                            x = q.LONG(x) + o.tiffHeader
                        }
                        for (F = 0; F < A; F++) {
                            E[F] = q.SHORT(x + F * 2)
                        }
                        break;
                    case 4:
                        if (A > 1) {
                            x = q.LONG(x) + o.tiffHeader
                        }
                        for (F = 0; F < A; F++) {
                            E[F] = q.LONG(x + F * 4)
                        }
                        break;
                    case 5:
                        x = q.LONG(x) + o.tiffHeader;
                        for (F = 0; F < A; F++) {
                            E[F] = q.LONG(x + F * 4) / q.LONG(x + F * 4 + 4)
                        }
                        break;
                    case 9:
                        x = q.LONG(x) + o.tiffHeader;
                        for (F = 0; F < A; F++) {
                            E[F] = q.SLONG(x + F * 4)
                        }
                        break;
                    case 10:
                        x = q.LONG(x) + o.tiffHeader;
                        for (F = 0; F < A; F++) {
                            E[F] = q.SLONG(x + F * 4) / q.SLONG(x + F * 4 + 4)
                        }
                        break;
                    default:
                        continue
                }
                D = (A == 1 ? E[0] : E);
                if (t.hasOwnProperty(G) && typeof D != "object") {
                    y[G] = t[G][D]
                } else {
                    y[G] = D
                }
            }
            return y
        }
        function s() {
            var v = e,
                u = o.tiffHeader;
            q.II(q.SHORT(u) == 18761);
            if (q.SHORT(u += 2) !== 42) {
                return false
            }
            o.IFD0 = o.tiffHeader + q.LONG(u += 2);
            v = p(o.IFD0, n.tiff);
            o.exifIFD = ("ExifIFDPointer" in v ? o.tiffHeader + v.ExifIFDPointer : e);
            o.gpsIFD = ("GPSInfoIFDPointer" in v ? o.tiffHeader + v.GPSInfoIFDPointer : e);
            return true
        }
        function r(w, u, z) {
            var B, y, x, A = 0;
            if (typeof (u) === "string") {
                var v = n[w.toLowerCase()];
                for (hex in v) {
                    if (v[hex] === u) {
                        u = hex;
                        break
                    }
                }
            }
            B = o[w.toLowerCase() + "IFD"];
            y = q.SHORT(B);
            for (i = 0; i < y; i++) {
                x = B + 12 * i + 2;
                if (q.SHORT(x) == u) {
                    A = x + 8;
                    break
                }
            }
            if (!A) {
                return false
            }
            q.LONG(A, z);
            return true
        }
        return {
            init: function (u) {
                o = {
                    tiffHeader: 10
                };
                if (u === e || !u.length) {
                    return false
                }
                q.init(u);
                if (q.SHORT(0) === 65505 && q.STRING(4, 5).toUpperCase() === "EXIF\0") {
                    return s()
                }
                return false
            },
            EXIF: function () {
                var v;
                v = p(o.exifIFD, n.exif);
                if (v.ExifVersion && j.typeOf(v.ExifVersion) === "array") {
                    for (var w = 0, u = ""; w < v.ExifVersion.length; w++) {
                        u += String.fromCharCode(v.ExifVersion[w])
                    }
                    v.ExifVersion = u
                }
                return v
            },
            GPS: function () {
                var u;
                u = p(o.gpsIFD, n.gps);
                if (u.GPSVersionID) {
                    u.GPSVersionID = u.GPSVersionID.join(".")
                }
                return u
            },
            setExif: function (u, v) {
                if (u !== "PixelXDimension" && u !== "PixelYDimension") {
                    return false
                }
                return r("exif", u, v)
            },
            getBinary: function () {
                return q.SEGMENT()
            }
        }
    }
})(window, document, plupload);
(function (d, a, b, c) {
    function e(f) {
        return a.getElementById(f)
    }
    b.runtimes.Html4 = b.addRuntime("html4", {
        getFeatures: function () {
            return {
                multipart: true,
                triggerDialog: (b.ua.gecko && d.FormData || b.ua.webkit)
            }
        },
        init: function (f, g) {
            f.bind("Init", function (p) {
                var j = a.body,
                    n, h = "javascript",
                    k, x, q, z = [],
                    r = /MSIE/.test(navigator.userAgent),
                    t = [],
                    m = p.settings.filters,
                    o, l, s, w;
                no_type_restriction: for (o = 0; o < m.length; o++) {
                    l = m[o].extensions.split(/,/);
                    for (w = 0; w < l.length; w++) {
                        if (l[w] === "*") {
                            t = [];
                            break no_type_restriction
                        }
                        s = b.mimeTypes[l[w]];
                        if (s && b.inArray(s, t) === -1) {
                            t.push(s)
                        }
                    }
                }
                t = t.join(",");

                function v() {
                    var C, A, y, B;
                    q = b.guid();
                    z.push(q);
                    C = a.createElement("form");
                    C.setAttribute("id", "form_" + q);
                    C.setAttribute("method", "post");
                    C.setAttribute("enctype", "multipart/form-data");
                    C.setAttribute("encoding", "multipart/form-data");
                    C.setAttribute("target", p.id + "_iframe");
                    C.style.position = "absolute";
                    A = a.createElement("input");
                    A.setAttribute("id", "input_" + q);
                    A.setAttribute("type", "file");
                    A.setAttribute("accept", t);
                    A.setAttribute("size", 1);
                    B = e(p.settings.browse_button);
                    if (p.features.triggerDialog && B) {
                        b.addEvent(e(p.settings.browse_button), "click", function (D) {
                            if (!A.disabled) {
                                A.click()
                            }
                            D.preventDefault()
                        }, p.id)
                    }
                    b.extend(A.style, {
                        width: "100%",
                        height: "100%",
                        opacity: 0,
                        fontSize: "99px",
                        cursor: "pointer"
                    });
                    b.extend(C.style, {
                        overflow: "hidden"
                    });
                    y = p.settings.shim_bgcolor;
                    if (y) {
                        C.style.background = y
                    }
                    if (r) {
                        b.extend(A.style, {
                            filter: "alpha(opacity=0)"
                        })
                    }
                    b.addEvent(A, "change", function (G) {
                        var E = G.target,
                            D, F = [],
                            H;
                        if (E.value) {
                            e("form_" + q).style.top = -1048575 + "px";
                            D = E.value.replace(/\\/g, "/");
                            D = D.substring(D.length, D.lastIndexOf("/") + 1);
                            F.push(new b.File(q, D));
                            if (!p.features.triggerDialog) {
                                b.removeAllEvents(C, p.id)
                            } else {
                                b.removeEvent(B, "click", p.id)
                            }
                            b.removeEvent(A, "change", p.id);
                            v();
                            if (F.length) {
                                f.trigger("FilesAdded", F)
                            }
                        }
                    }, p.id);
                    C.appendChild(A);
                    j.appendChild(C);
                    p.refresh()
                }
                function u() {
                    var y = a.createElement("div");
                    y.innerHTML = '<iframe id="' + p.id + '_iframe" name="' + p.id + '_iframe" src="' + h + ':&quot;&quot;" style="display:none"></iframe>';
                    n = y.firstChild;
                    j.appendChild(n);
                    b.addEvent(n, "load", function (D) {
                        var E = D.target,
                            C, A;
                        if (!k) {
                            return
                        }
                        try {
                            C = E.contentWindow.document || E.contentDocument || d.frames[E.id].document
                        } catch (B) {
                            p.trigger("Error", {
                                code: b.SECURITY_ERROR,
                                message: b.translate("Security error."),
                                file: k
                            });
                            return
                        }
                        A = C.documentElement.innerText || C.documentElement.textContent;
                        if (A) {
                            k.status = b.DONE;
                            k.loaded = 1025;
                            k.percent = 100;
                            p.trigger("UploadProgress", k);
                            p.trigger("FileUploaded", k, {
                                response: A
                            })
                        }
                    }, p.id)
                }
                if (p.settings.container) {
                    j = e(p.settings.container);
                    if (b.getStyle(j, "position") === "static") {
                        j.style.position = "relative"
                    }
                }
                p.bind("UploadFile", function (y, B) {
                    var C, A;
                    if (B.status == b.DONE || B.status == b.FAILED || y.state == b.STOPPED) {
                        return
                    }
                    C = e("form_" + B.id);
                    A = e("input_" + B.id);
                    A.setAttribute("name", y.settings.file_data_name);
                    C.setAttribute("action", y.settings.url);
                    b.each(b.extend({
                        name: B.target_name || B.name
                    }, y.settings.multipart_params), function (F, D) {
                        var E = a.createElement("input");
                        b.extend(E, {
                            type: "hidden",
                            name: D,
                            value: F
                        });
                        C.insertBefore(E, C.firstChild)
                    });
                    k = B;
                    e("form_" + q).style.top = -1048575 + "px";
                    C.submit()
                });
                p.bind("FileUploaded", function (y) {
                    y.refresh()
                });
                p.bind("StateChanged", function (y) {
                    if (y.state == b.STARTED) {
                        u()
                    } else {
                        if (y.state == b.STOPPED) {
                            d.setTimeout(function () {
                                b.removeEvent(n, "load", y.id);
                                if (n.parentNode) {
                                    n.parentNode.removeChild(n)
                                }
                            }, 0)
                        }
                    }
                    b.each(y.files, function (B, A) {
                        if (B.status === b.DONE || B.status === b.FAILED) {
                            var C = e("form_" + B.id);
                            if (C) {
                                C.parentNode.removeChild(C)
                            }
                        }
                    })
                });
                p.bind("Refresh", function (A) {
                    var G, B, C, D, y, H, I, F, E;
                    G = e(A.settings.browse_button);
                    if (G) {
                        y = b.getPos(G, e(A.settings.container));
                        H = b.getSize(G);
                        I = e("form_" + q);
                        F = e("input_" + q);
                        b.extend(I.style, {
                            top: y.y + "px",
                            left: y.x + "px",
                            width: H.w + "px",
                            height: H.h + "px"
                        });
                        if (A.features.triggerDialog) {
                            if (b.getStyle(G, "position") === "static") {
                                b.extend(G.style, {
                                    position: "relative"
                                })
                            }
                            E = parseInt(G.style.zIndex, 10);
                            if (isNaN(E)) {
                                E = 0
                            }
                            b.extend(G.style, {
                                zIndex: E
                            });
                            b.extend(I.style, {
                                zIndex: E - 1
                            })
                        }
                        C = A.settings.browse_button_hover;
                        D = A.settings.browse_button_active;
                        B = A.features.triggerDialog ? G : I;
                        if (C) {
                            b.addEvent(B, "mouseover", function () {
                                b.addClass(G, C)
                            }, A.id);
                            b.addEvent(B, "mouseout", function () {
                                b.removeClass(G, C)
                            }, A.id)
                        }
                        if (D) {
                            b.addEvent(B, "mousedown", function () {
                                b.addClass(G, D)
                            }, A.id);
                            b.addEvent(a.body, "mouseup", function () {
                                b.removeClass(G, D)
                            }, A.id)
                        }
                    }
                });
                f.bind("FilesRemoved", function (y, B) {
                    var A, C;
                    for (A = 0; A < B.length; A++) {
                        C = e("form_" + B[A].id);
                        if (C) {
                            C.parentNode.removeChild(C)
                        }
                    }
                });
                f.bind("DisableBrowse", function (y, B) {
                    var A = a.getElementById("input_" + q);
                    if (A) {
                        A.disabled = B
                    }
                });
                f.bind("Destroy", function (y) {
                    var A, B, C, D = {
                        inputContainer: "form_" + q,
                        inputFile: "input_" + q,
                        browseButton: y.settings.browse_button
                    };
                    for (A in D) {
                        B = e(D[A]);
                        if (B) {
                            b.removeAllEvents(B, y.id)
                        }
                    }
                    b.removeAllEvents(a.body, y.id);
                    b.each(z, function (F, E) {
                        C = e("form_" + F);
                        if (C) {
                            C.parentNode.removeChild(C)
                        }
                    })
                });
                v()
            });
            g({
                success: true
            })
        }
    })
})(window, document, plupload);